#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<queue>

using namespace std;

class MyStack {
public:
	MyStack()
	{}

	void push(int x) {
		if (!_q1.empty())
		{
			_q1.push(x);
		}
		else
		{
			_q2.push(x);
		}
	}

	int pop() {

 		if (_q1.empty())
		{
			queue<int>& unemptyQ = _q1;
			queue<int>& emptyQ = _q2;
		}
		else
		{
			queue<int>& unemptyQ = _q2;
			queue<int>& emptyQ = _q1;
		}
		while (unemptyQ.size()>1)
		{
			emptyQ.push(unemptyQ.front());
			unemptyQ.pop();
		}
		int top = unemptyQ.front();
		unemptyQ.pop();
		printf("%d\n", unemptyQ.empty());
		printf("%d\n", emptyQ.empty());

		return top;
	}

	int top() {
		if (!_q1.empty())
		{
			return _q1.back();
		}
		else
		{
			return _q2.back();
		}
	}

	bool empty() {
		/*cout << _q1.empty() << endl;
		cout << _q2.empty() << endl;*/
		return _q1.empty() && _q2.empty();
	}

	queue<int> _q1;
	queue<int> _q2;
};

int main()
{
	MyStack st;
	st.push(1);
	st.pop();
	cout << st.empty() << endl;
	return 0;
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/
//void test_stack()
//{
//	stack<int> st;
//	st.push(1);
//	st.push(2);
//	st.push(3);
//	st.push(4);
//
//	while (!st.empty())
//	{
//		cout << st.top() << " ";
//		st.pop();
//	}
//	cout << endl;
//}
//
//void test_queue()
//{
//	queue<int> q;
//	q.push(1);
//	q.push(2);
//	q.push(3);
//	q.push(4);
//
//	while (!q.empty())
//	{
//		cout << q.front() << " ";
//		q.pop();
//	}
//	cout << endl;
//}
//int main()
//{
//	test_stack();
//	test_queue();
//	return 0;
//}